<?php
 /*****
实例：
		$sql = "select count(*)as count from $tbl";
		$db->query($sql);
		$db->next_record();
		$count = $db->f(count);//记录总数
		
		$page = new ShowPage;
 		$page->PageSize = 20;
		$page->Total = $count;
		$page->LinkAry = array(); //使用array("id"=>$id)这样的数组传递url变量
		$sql = "select * from $tbl order by sortid desc limit  ".$page->OffSet();
		$db->query($sql);
		$showpage = $page->ShowLink();

   
*****/
 class ShowPage
 {
 	
	var $PageSize;     //每页显示的记录数
	
	var $Total;        //记录总数
	
	var $LinkAry;      //Url参数数组，对于复合条件查询分页显示情况非常好用
	
    //取得总页数
	function PageCount()
	{
		$TotalPage = ($this->Total % $this->PageSize == 0) ? floor($this->Total / $this->PageSize) :  floor($this->Total / $this->PageSize)+1;
		return $TotalPage;
	}
   //取得当前页
	function PageNum()
	{
		$page =  (isset( $_GET['page'])!="") ? $_GET['page'] :  $page = 1; 
		return $page;
	}
   //查询语句定位指针		
	function OffSet()
	{
		if ($this->PageNum() > $this->PageCount())
		{
	        //$this->PageNum = $this->PageCount();
	        $pagemin = max(0,$this->Total - $this->PageSize - 1);
        }
		else if ($this->PageNum() == 1)
		{
		        $pagemin = 0;
	    }else
		   {
		        $pagemin = min($this->Total - 1,$this->PageSize * ($this->PageNum() - 1));
	       }
		return $pagemin . "," . $this->PageSize;
	    }
    //定位首页		
	function FristPage()
	{
		$Frist = ($this->PageNum() <= 1) ? "<span>首页</span>" : "<a href=\"?page=1".$this->Url($this->LinkAry)."\">首页</a>";
		return $Frist;
	}

	function EnFristPage()
	{
		$Frist = ($this->PageNum() <= 1) ? "Frist  " : "<a href=\"?page=1".$this->Url($this->LinkAry)."\">Frist</a> ";
		return $Frist;
	}


    //定位上一页
	function PrePage()
	{
		$prepage=$this->PageNum() - 1;
		$Previous = ($this->PageNum() >= 2) ? "<a href=\"?page=".$prepage.$this->Url($this->LinkAry)."\">上页</a>" : "<span>上页</span>";
		return $Previous;
	}
	function EnPrePage()
	{
		$prepage=$this->PageNum() - 1;
		$Previous = ($this->PageNum() >= 2) ? " <a href=\"?page=".$prepage.$this->Url($this->LinkAry)."\">PrePage</a> " : "PrePage ";
		return $Previous;
	}

//定位下一页
	function NextPage()
	{
		$nextpage = $this->PageNum() + 1;
		$Next = ($this->PageNum() <= $this->PageCount()-1) ? "<a href=\"?page=".$nextpage.$this->Url($this->LinkAry)."\">下页</a>" : "<span>下页</span>";
		return $Next;
	}
	function EnNextPage()
	{
		$nextpage = $this->PageNum() + 1;
		$Next = ($this->PageNum() <= $this->PageCount()-1) ? " <a href=\"?page=".$nextpage.$this->Url($this->LinkAry)."\">NextPage</a> " : "NextPage ";
		return $Next;
	}

   //定位最后一页
	function LastPage()
	{
		$Last = ($this->PageNum() >= $this->PageCount()) ? "<span>尾页</span>" : "<a href=\"?page=".$this->PageCount().$this->Url($this->LinkAry)."\">尾页</a>";
		return $Last;
	}
	function EnLastPage()
	{
		$Last = ($this->PageNum() >= $this->PageCount()) ? "Last  " : " <a href=\"?page=".$this->PageCount().$this->Url($this->LinkAry)."\">Last</a> ";
		return $Last;
	}

//下拉跳转页面
	function JumpPage()
	{
		$Jump = "<B>".$this->PageNum()."/".$this->PageCount()."</B><select name=page onchange=\"javascript:location=this.options[this.selectedIndex].value;\">";
		for ($i=1; $i<=$this->PageCount(); $i++)
		{
		   if ($i==$this->PageNum())
			  $Jump .= "<option value=\"?page=".$i.$this->Url($this->LinkAry)."\" selected>$i</option>";
		   else 
			  $Jump .="<option value=\"?page=".$i.$this->Url($this->LinkAry)."\">$i</option> ";	
		}
	    $Jump .= "</select>";
		return $Jump;
	}

	function EnJumpPage()
	{
		$Jump = " Current <b>".$this->PageNum()."</b> Page Total <b>".$this->PageCount()."</b> Pages To <select name=page onchange=\"javascript:location=this.options[this.selectedIndex].value;\">";
		for ($i=1; $i<=$this->PageCount(); $i++)
		{
		   if ($i==$this->PageNum())
			  $Jump .= "<option value=\"?page=".$i.$this->Url($this->LinkAry)."\" selected>$i</option>";
		   else 
			  $Jump .="<option value=\"?page=".$i.$this->Url($this->LinkAry)."\">$i</option> ";	
		}
	    $Jump .= "</select> Pages   <b>[".$this->PageSize."Pic/P]</b>";
		return $Jump;
	}

//URL参数处理
	function Url($ary)
	{
		$Linkstr = "";
		if (count($ary) > 0)
		{
			foreach ($ary as $key => $val)
			{
			   $Linkstr .= "&".$key."=".$val;
			}
		}
		return $Linkstr;
	}
//生成导航条
	function ShowLink()
	{
		return $this->FristPage().$this->PrePage().$this->NextPage().$this->LastPage().$this->JumpPage();
	}	
	function EnShowLink()
	{
		return $this->EnFristPage().$this->EnPrePage().$this->EnNextPage().$this->EnLastPage().$this->EnJumpPage();
	}	

}
?>